Skip to main content

276035 - FrontEnd 개발자 찾기

info

풀이 키워드​

스포주의

JOIN &


풀이 코드​

WITH FE AS (
SELECT SUM(CODE) AS SUM_CODE
FROM SKILLCODES
WHERE CATEGORY = 'Front End'
)

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS D
JOIN FE F
ON F.SUM_CODE & D.SKILL_CODE > 0
ORDER BY ID;

풀이 해설​

DEVELOPERS의 스킬이 전부 SKILL_CODE에 비트테이블 식으로 저장되어있는데

여기서 비트마스킹을 통해 FE 스킬을 가지고 있는지 확인해서 추리는 문제이다.


풀이 순서​

  1. 모든 FE 스킬 코드를 하나의 코드로 합산해서 FE 테이블 생성
  2. DEVELOPERS의 스킬 코드와 FE의 코드를 bitwise and해서 양수일때만 INNER JOIN
  3. ID로 오름차순 정렬

메모​

  • 서브쿼리는 가독성에 좋지 않으므로 WITH를 활용하자
  • FE가 테이블이라서 WHERE가 아니라 JOIN을 써야 함
  • ON에 비트연산자 넣을 수 있는거 첨 알음